Data Summary
income <- read.csv("https://ecoleman451.github.io/ecoleman/w6/income_per_person.csv")
life <- read.csv("https://ecoleman451.github.io/ecoleman/w6/life_expectancy_years.csv")
# Reshape data set such that there are only three columns (Geo, Year, & Income)
new_income <- pivot_longer(income, cols = -geo, names_to = "year", values_to = "income")
new_life <- pivot_longer(life, cols = -geo, names_to = "year", values_to = "life.expectancy")
## Create new data set
LifeExpIncom <- merge(new_life, new_income, by = c("geo", "year"))
## Read in More Data
country <- read.csv("https://ecoleman451.github.io/ecoleman/w6/countries_total.csv")
pop <- read.csv("https://ecoleman451.github.io/ecoleman/w6/population_total.csv")
new_pop <- pivot_longer(pop, cols = -geo, names_to = "year", values_to = "population")
## Merge LifeExpIncom with Country
merged <- merge(LifeExpIncom, country, by.x = "geo", by.y = "name", all.x = TRUE)
## Merge Population with Merged Data
fin_data <- merge(new_pop, merged, by = c("geo", "year"), all.x = TRUE)
## Get Data for Year 2015
final_data <- subset(fin_data, year =="X2015")
summary(final_data)
geo year population life.expectancy
Length:195 Length:195 Min. :8.030e+02 Min. :49.60
Class :character Class :character 1st Qu.:1.955e+06 1st Qu.:66.05
Mode :character Mode :character Median :8.320e+06 Median :73.30
Mean :3.768e+07 Mean :71.93
3rd Qu.:2.725e+07 3rd Qu.:77.50
Max. :1.400e+09 Max. :83.80
NA's :8
income alpha.2 alpha.3 country.code
Min. : 623 Length:195 Length:195 Min. : 4.0
1st Qu.: 3270 Class :character Class :character 1st Qu.:209.0
Median : 10800 Mode :character Mode :character Median :418.0
Mean : 17179 Mean :424.9
3rd Qu.: 24100 3rd Qu.:642.8
Max. :120000 Max. :894.0
NA's :8 NA's :21
iso_3166.2 region sub.region intermediate.region
Length:195 Length:195 Length:195 Length:195
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
region.code sub.region.code intermediate.region.code
Min. : 2.00 Min. : 15.0 Min. : 5.00
1st Qu.: 2.00 1st Qu.: 54.0 1st Qu.:11.00
Median : 19.00 Median :154.0 Median :14.00
Mean : 71.74 Mean :177.9 Mean :14.89
3rd Qu.:142.00 3rd Qu.:202.0 3rd Qu.:17.00
Max. :150.00 Max. :419.0 Max. :29.00
NA's :21 NA's :21 NA's :119
Plotly
scatter_plot <- plot_ly(
data = final_data,
x = ~income,
y = ~life.expectancy,
size = ~population,
color = ~geo,
text = ~paste("Country: ", geo, "<br>Population: ", population),
type = "scatter",
mode = "markers",
marker = list(
opacity = 0.6, # Transparency level
sizemode = "diameter", # Set the size mode to diameter
sizeref = 0.1, # Adjust the size reference for better visibility
line = list(
color = "black", # Boundary color for points
width = 1 # Boundary width
)
)
)
layout <- list(
title = "Association Between Life Expectancy and Income (Year 2015)",
xaxis = list(title = "Income"),
yaxis = list(title = "Life Expectancy"),
showlegend = FALSE # Hide legend for individual countries
)
# Combine the plot and layout
scatter_plot <- layout(scatter_plot, layout)
# Display the interactive scatter plot
scatter_plot
LS0tDQp0aXRsZTogIlBsb3RseSINCmF1dGhvcjogIkVkd2FyZCBDb2xlbWFuIg0KZGF0ZTogIldlc3QgQ2hlc3RlciBVbml2ZXJzaXR5Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICB0aGVtZTogbHVtZW4NCmVkaXRvcl9vcHRpb25zOg0KICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lDQotLS0NCg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCg0KZGl2I1RPQyBsaSB7DQogICAgbGlzdC1zdHlsZTpub25lOw0KICAgIGJhY2tncm91bmQtY29sb3I6bGlnaHRncmF5Ow0KICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpub25lOw0KICAgIGJhY2tncm91bmQtcG9zaXRpb246MDsNCiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgICBjb2xvcjogIzc4MGMwYzsNCn0NCg0KaDEudGl0bGUgew0KICBmb250LXNpemU6IDI0cHg7DQogIGNvbG9yOiBEYXJrUmVkOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KICBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOw0KfQ0KaDQuYXV0aG9yIHsgDQogICAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6IERhcmtSZWQ7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCmg0LmRhdGUgeyANCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6IERhcmtCbHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQpoMSB7IA0KICAgIGZvbnQtc2l6ZTogMjJweDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQpoMiB7IA0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMyB7IA0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogbmF2eTsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoNCB7DQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCg0KLyogVGFiIGZlYXR1cmVzICovDQoubmF2PmxpPmEgew0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICBkaXNwbGF5OiBibG9jazsNCiAgICBwYWRkaW5nOiAycHggMTVweDsNCiAgICBjb2xvcjogIzk5MDAwMDsNCn0NCi5uYXYtcGlsbHM+bGkuYWN0aXZlPmEsIC5uYXYtcGlsbHM+bGkuYWN0aXZlPmE6aG92ZXIsIC5uYXYtcGlsbHM+bGkuYWN0aXZlPmE6Zm9jdXMgew0KICAgIGNvbG9yOiAjZmZmZmZmOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTAwMDA7DQp9DQovKg0KbmF2LXBpbGxzPmxpOm50aC1jaGlsZCgyKSB7DQogICAgYmFja2dyb3VuZDogZ3JlZW47DQogfQ0KICovDQo8L3N0eWxlPg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCm9wdGlvbnMocmVwb3MgPSBsaXN0KENSQU49Imh0dHA6Ly9jcmFuLnJzdHVkaW8uY29tLyIpKQ0KaWYgKCFyZXF1aXJlKCJ0aWR5dmVyc2UiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikNCiAgIGxpYnJhcnkodGlkeXZlcnNlKQ0KfQ0KaWYgKCFyZXF1aXJlKCJrbml0ciIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJrbml0ciIpDQogICBsaWJyYXJ5KGtuaXRyKQ0KfQ0KaWYgKCFyZXF1aXJlKCJjb3dwbG90IikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoImNvd3Bsb3QiKQ0KICAgbGlicmFyeShjb3dwbG90KQ0KfQ0KaWYgKCFyZXF1aXJlKCJsYXRleDJleHAiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygibGF0ZXgyZXhwIikNCiAgIGxpYnJhcnkobGF0ZXgyZXhwKQ0KfQ0KaWYgKCFyZXF1aXJlKCJwbG90bHkiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygicGxvdGx5IikNCiAgIGxpYnJhcnkocGxvdGx5KQ0KfQ0KaWYgKCFyZXF1aXJlKCJnYXBtaW5kZXIiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygiZ2FwbWluZGVyIikNCiAgIGxpYnJhcnkoZ2FwbWluZGVyKQ0KfQ0KaWYgKCFyZXF1aXJlKCJwbmciKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoInBuZyIpICAgIA0KICAgIGxpYnJhcnkoInBuZyIpDQp9DQppZiAoIXJlcXVpcmUoIlJDdXJsIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJSQ3VybCIpICAgIA0KICAgIGxpYnJhcnkoIlJDdXJsIikNCn0NCmlmICghcmVxdWlyZSgiY29sb3VycGlja2VyIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJjb2xvdXJwaWNrZXIiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiY29sb3VycGlja2VyIikNCn0NCmlmICghcmVxdWlyZSgiZ2dhbmltYXRlIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnZ2FuaW1hdGUiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZ2dhbmltYXRlIikNCn0NCmlmICghcmVxdWlyZSgiZ2lmc2tpIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnaWZza2kiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZ2lmc2tpIikNCn0NCmlmICghcmVxdWlyZSgibWFnaWNrIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJtYWdpY2siKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgibWFnaWNrIikNCn0NCmlmICghcmVxdWlyZSgiZ3JEZXZpY2VzIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnckRldmljZXMiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZ3JEZXZpY2VzIikNCn0NCmlmICghcmVxdWlyZSgianBlZyIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygianBlZyIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJqcGVnIikNCn0NCmlmICghcmVxdWlyZSgiZ2dyaWRnZXMiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImdncmlkZ2VzIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImdncmlkZ2VzIikNCn0NCmlmICghcmVxdWlyZSgicGx5ciIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygicGx5ciIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJwbHlyIikNCn0NCmlmICghcmVxdWlyZSgiZ2dpcmFwaCIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiZ2dpcmFwaCIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJnZ2lyYXBoIikNCn0NCmlmICghcmVxdWlyZSgiaGlnaGNoYXJ0ZXIiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImhpZ2hjaGFydGVyIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImhpZ2hjaGFydGVyIikNCn0NCmlmICghcmVxdWlyZSgiZm9yZWNhc3QiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImZvcmVjYXN0IikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImZvcmVjYXN0IikNCn0NCiMjIA0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UsICAgDQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gVFJVRSwgICANCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IE5BKQ0KYGBgDQoNCiMgRGF0YSBTdW1tYXJ5DQpgYGB7cn0NCmluY29tZSA8LSByZWFkLmNzdigiaHR0cHM6Ly9lY29sZW1hbjQ1MS5naXRodWIuaW8vZWNvbGVtYW4vdzYvaW5jb21lX3Blcl9wZXJzb24uY3N2IikNCg0KbGlmZSA8LSByZWFkLmNzdigiaHR0cHM6Ly9lY29sZW1hbjQ1MS5naXRodWIuaW8vZWNvbGVtYW4vdzYvbGlmZV9leHBlY3RhbmN5X3llYXJzLmNzdiIpDQoNCiMgUmVzaGFwZSBkYXRhIHNldCBzdWNoIHRoYXQgdGhlcmUgYXJlIG9ubHkgdGhyZWUgY29sdW1ucyAoR2VvLCBZZWFyLCAmIEluY29tZSkNCm5ld19pbmNvbWUgPC0gcGl2b3RfbG9uZ2VyKGluY29tZSwgY29scyA9IC1nZW8sIG5hbWVzX3RvID0gInllYXIiLCB2YWx1ZXNfdG8gPSAiaW5jb21lIikNCg0KbmV3X2xpZmUgPC0gcGl2b3RfbG9uZ2VyKGxpZmUsIGNvbHMgPSAtZ2VvLCBuYW1lc190byA9ICJ5ZWFyIiwgdmFsdWVzX3RvID0gImxpZmUuZXhwZWN0YW5jeSIpDQoNCiMjIENyZWF0ZSBuZXcgZGF0YSBzZXQNCkxpZmVFeHBJbmNvbSA8LSBtZXJnZShuZXdfbGlmZSwgbmV3X2luY29tZSwgYnkgPSBjKCJnZW8iLCAieWVhciIpKQ0KDQojIyBSZWFkIGluIE1vcmUgRGF0YQ0KY291bnRyeSA8LSByZWFkLmNzdigiaHR0cHM6Ly9lY29sZW1hbjQ1MS5naXRodWIuaW8vZWNvbGVtYW4vdzYvY291bnRyaWVzX3RvdGFsLmNzdiIpDQoNCnBvcCA8LSByZWFkLmNzdigiaHR0cHM6Ly9lY29sZW1hbjQ1MS5naXRodWIuaW8vZWNvbGVtYW4vdzYvcG9wdWxhdGlvbl90b3RhbC5jc3YiKQ0KDQpuZXdfcG9wIDwtIHBpdm90X2xvbmdlcihwb3AsIGNvbHMgPSAtZ2VvLCBuYW1lc190byA9ICJ5ZWFyIiwgdmFsdWVzX3RvID0gInBvcHVsYXRpb24iKQ0KDQojIyBNZXJnZSBMaWZlRXhwSW5jb20gd2l0aCBDb3VudHJ5DQptZXJnZWQgPC0gbWVyZ2UoTGlmZUV4cEluY29tLCBjb3VudHJ5LCBieS54ID0gImdlbyIsIGJ5LnkgPSAibmFtZSIsIGFsbC54ID0gVFJVRSkNCg0KIyMgTWVyZ2UgUG9wdWxhdGlvbiB3aXRoIE1lcmdlZCBEYXRhDQpmaW5fZGF0YSA8LSBtZXJnZShuZXdfcG9wLCBtZXJnZWQsIGJ5ID0gYygiZ2VvIiwgInllYXIiKSwgYWxsLnggPSBUUlVFKQ0KDQojIyBHZXQgRGF0YSBmb3IgWWVhciAyMDE1DQpmaW5hbF9kYXRhIDwtIHN1YnNldChmaW5fZGF0YSwgeWVhciA9PSJYMjAxNSIpDQpzdW1tYXJ5KGZpbmFsX2RhdGEpDQpgYGANCg0KDQojIFBsb3RseQ0KYGBge3J9DQpzY2F0dGVyX3Bsb3QgPC0gcGxvdF9seSgNCiAgZGF0YSA9IGZpbmFsX2RhdGEsDQogIHggPSB+aW5jb21lLA0KICB5ID0gfmxpZmUuZXhwZWN0YW5jeSwNCiAgc2l6ZSA9IH5wb3B1bGF0aW9uLA0KICBjb2xvciA9IH5nZW8sDQogIHRleHQgPSB+cGFzdGUoIkNvdW50cnk6ICIsIGdlbywgIjxicj5Qb3B1bGF0aW9uOiAiLCBwb3B1bGF0aW9uKSwNCiAgdHlwZSA9ICJzY2F0dGVyIiwNCiAgbW9kZSA9ICJtYXJrZXJzIiwNCiAgbWFya2VyID0gbGlzdCgNCiAgICBvcGFjaXR5ID0gMC42LCAgIyBUcmFuc3BhcmVuY3kgbGV2ZWwNCiAgICBzaXplbW9kZSA9ICJkaWFtZXRlciIsICAjIFNldCB0aGUgc2l6ZSBtb2RlIHRvIGRpYW1ldGVyDQogICAgc2l6ZXJlZiA9IDAuMSwgICMgQWRqdXN0IHRoZSBzaXplIHJlZmVyZW5jZSBmb3IgYmV0dGVyIHZpc2liaWxpdHkNCiAgICBsaW5lID0gbGlzdCgNCiAgICAgIGNvbG9yID0gImJsYWNrIiwgICMgQm91bmRhcnkgY29sb3IgZm9yIHBvaW50cw0KICAgICAgd2lkdGggPSAxICAjIEJvdW5kYXJ5IHdpZHRoDQogICAgKQ0KICApDQopDQpsYXlvdXQgPC0gbGlzdCgNCiAgdGl0bGUgPSAiQXNzb2NpYXRpb24gQmV0d2VlbiBMaWZlIEV4cGVjdGFuY3kgYW5kIEluY29tZSAoWWVhciAyMDE1KSIsDQogIHhheGlzID0gbGlzdCh0aXRsZSA9ICJJbmNvbWUiKSwNCiAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIkxpZmUgRXhwZWN0YW5jeSIpLA0KICBzaG93bGVnZW5kID0gRkFMU0UgICMgSGlkZSBsZWdlbmQgZm9yIGluZGl2aWR1YWwgY291bnRyaWVzDQopDQoNCiMgQ29tYmluZSB0aGUgcGxvdCBhbmQgbGF5b3V0DQpzY2F0dGVyX3Bsb3QgPC0gbGF5b3V0KHNjYXR0ZXJfcGxvdCwgbGF5b3V0KQ0KDQojIERpc3BsYXkgdGhlIGludGVyYWN0aXZlIHNjYXR0ZXIgcGxvdA0Kc2NhdHRlcl9wbG90DQpgYGANCg==